var hlStorage = (function (w) {
  var storage = {
    //清除所有存储字段
    lsClearAllKey: function () {
      w.localStorage.clear()
    },
    /*
     * 清除指定的存储字段
     * @param key    {String} 单一字段
     * */
    lsClearOneKey: function (key) {
      w.localStorage.removeItem(key)
    },
    /*
     * 清除多个存储字段
     * @param keyArr {Array}  多个字段数组
     * */
    lsClearMultipleKey:function (keyArr) {
      keyArr.map(function (item) {
        if(w.localStorage.getItem(item)){
          w.localStorage.removeItem(item)
        }
      })
    },
    //设置字段
    lsSet: function (name, value) {
      w.localStorage.setItem(name, value)
    },
    //先查询有没有当前字段，在设置
    lsSetEx: function (name, value) {
      var temp = w.localStorage.getItem(name)
      if (!temp) {
        w.localStorage.setItem(name, value)
      }
    },
    //获取指定字段//
    lsGet: function (name) {
      return w.localStorage.getItem(name)
    },
    /*获取某个key下的某个字段*/
    lsGetDeepKey:function (name,key) {
      var value = w.localStorage.getItem(name)
      if(value){
        if(typeof value === 'string'){
          return JSON.parse(value)[key]
        }
        if(typeof value === 'object'){
          return value[key]
        }
      }
      if(!value)return null
    },
    //获取多个字段
    /*
     options 可以是object, arrary
     也可以是多个string
     */
    lsGetMore: function (options) {
      var arr = [];
      if (typeof options == 'object') {
        for (var item in options) {
          arr.push([options, w.localStorage.getItem(options[item])])
        }
      }
      if (typeof options != 'object') {
        for (var i = 0; i < arguments.length; i++) {
          arr.push([arguments[i], w.localStorage.getItem(arguments[i])])
        }
      }
      return arr
    },
    //获取所有字段
    lsGetAll: function () {
      var arr = [];
      for(var i=0; i<localStorage.length; i++){
        arr.push([localStorage.key(i), w.localStorage.getItem(localStorage.key(i))])
      }
      return arr;
    },
    //清除临时所有存储字段
    ssClearAllKey: function () {
      w.sessionStorage.clear()
    },
    /*
     * 清除指定的存储字段
     * @param key    {String} 单一字段
     * */
    ssClearOneKey: function (key) {
      if(w.sessionStorage.getItem(key)){
        w.sessionStorage.removeItem(key)
      }
    },
    /*
     * 清除多个存储字段
     * @param keyArr {Array}  多个字段数组
     * */
    ssClearMultipleKey:function (keyArr) {
      keyArr.map(function (item) {
        if(w.sessionStorage.getItem(item)){
          w.sessionStorage.removeItem(item)
        }
      })
    },
    //设置临时字段
    ssSet: function (name, value) {
      w.sessionStorage.setItem(name, value)
    },
    //先查询有没有当前临时字段，在设置
    ssSetEx: function (name, value) {
      var temp = w.sessionStorage.getItem(name)
      if (!temp) {
        w.sessionStorage.setItem(name, value)
      }
    },
    //获取指定临时字段
    ssGet: function (name) {
      return w.sessionStorage.getItem(key)
    },
    //获取多个临时字段
    /*
     options 可以是 object
     也可以是多个参数
     */
    ssGetMore: function (options) {
      var arr = [];
      if (typeof options == 'object') {
        for (var item in options) {
          arr.push([options, w.sessionStorage.getItem(options[item])])
        }
      }
      if (typeof options != 'object') {
        for (var i = 0; i < arguments.length; i++) {
          arr.push([arguments[i], w.sessionStorage.getItem(arguments[i])])
        }
      }
      return arr
    },
    //获取所有字段
    ssGetAll: function () {
      var arr = [];
      for(var i=0; i<sessionStorage.length; i++){
        arr.push([sessionStorage.key(i), w.sessionStorage.getItem(sessionStorage.key(i))])
      }
      return arr;
    },
    /**
     * 获取用户信息字段  如果没有用户信息  返回登陆界面
     * @param {name}  string  要取的key
     * @return {obj} 返回对应的键值  没有传key返回整个用户信息
     */
    getUserMes: function(key){
      var userMes = window.localStorage.getItem('userMes')
      if(userMes){
        if(key){ return JSON.parse(userMes)[key] }
        if(!key){ return JSON.parse(userMes) }
      }else{
        window.location.href = 'login.html'
      }
    }
  }

  return storage
}(window))
